home *** CD-ROM | disk | FTP | other *** search
Common Ground | 1993-10-27 | 347.6 KB | 1,054 lines | [APPL/CGSL] |
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- `Z<`[
- ``Z`Z``a
- 1O1UV
- [VTV[
- fZ[[ZaZ6T606T6Z1Z60[
- [0T70ZUU00Z0T
- [0*0a
- [0U+*0
- z1V0+0
- 0U[[U+
- \U11+
- *1+*1
- 0+0+[
- U\z\V1
- V11*1
- \101\
- \112U
- \1011
- \V12U
- \11*1
- \U1+1\
- \1*11
- \V7V\
- cV11*
- ]\V\\
- \1101b
- zU1*1
- \VU1*
- \110[
- \8101
- \[1*0[Z
- z\\U1*
- V[1*7Z``
- U1*UZ[U
- \U0U[
- [0+1U1*+[
- \**6+
- U[*0`
- SbI 2Stone Sans SemibdItal
- Copyright Ramon M. Felciano 1993
- All Rights Reserved
- Digital Alchemy
- P.O.Box 9632
- Stanford, CA 94309-9632
- felciano@summit.stanford.edu
- 1Stone Serif
- Digital Alchemy
- CIconButton CDEF 1.0
- B 2Stone Sans Bold
- Overview
- CIconButton CDEF
- )UD is a custom control definition procedure that allows developers to
- easily and
- HUelegantly include
- icon buttons
- in their applications. These icon buttons are built
- from one or more
- resources. The
- CIconButton CDEF
- works under System 6 &
- $7, is sensitive to multiple monitors
- H4and monitor depths, and works with or without Color
- O-Quickdraw. Mouse tracking is sensitive to the
- HAcicn mask, so your buttons don
- t have to be rectangular in shape.
- CIconButton CDEF
- )T* supports the three standard button types:
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- Pushbutton
- : a normal icon
- button that hilights
- when you click on
- it, and resets itself when you
- release the mouse.
- As shown here, it can be
- a framed button (top) or
- an arbitrary region (below).
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- Radio Button
- : the
- same as the Pushbutton control,
- except that it
- )F"toggles back and forth between two
- icons when you select it.
- 4It can also be used as a simple toggle switch (e.g.
- %the key-latch in the Alarm Clock DA).
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- *8 Check Box
- : shows or hides a separate
- alternate
- icon depending on its state.
- This third icon is
- !usually a checkmark of some sort.
- CIconButton CDEF
- )WC uses offscreen graphics to enhance the appearance and behavior of
- HNbuttons, and provide very fast drawing speeds. This usually requires a memory
- overhead of 12-18K
- per 32-by-32 pixel icon. For
- *the memory conscious, we also provide the
- CIconButtonLite CDEF
- which
- doesn
- t cache the icon images:
- Ethe drawing is slightly slower, but only uses 3-5K per 32 by 32 pixel
- HIicon. All of the functionality described in this manual is available for
- both the
- CIconButton CDEF
- CIconButtonLite CDEF
- The Demonstration Application
- The sample
- )=5application demonstrates most of the features in the
- CIconButton CDEF
- . All of the
- H[controls in the dialog make use of the API (Application Programming Interface) and Library
- that was
- provided with this package.
- )Some notes about this sample application:
- 3There are four sets of icons you can test out; use
- the popup menu to switch
- between different sets.
- DThe
- Pushbutton
- example in the
- Grayscale Icons
- set is an example
- of the
- ~)selected-button icon generation that the
- CIconButton CDEF
- does. Normally,
- ~,you supply a separate cicn resource for the
- "selected icon. If you don
- t, as in
- this case, the
- CIconButton CDEF
- )T- will do its best to generate one on the fly.
- 1Stone Serif
- Digital Alchemy
- CIconButton CDEF 1.0
- 4The
- Times 14 Bold, Italic
- option is an example of
- setting the button titles to
- ~6an arbitrary text font, size, style, and drawing mode.
- Note:
- You may notice a
- )WMflicker if you change several settings in the demonstration application (e.g.
- Hgchange the font, title orientation, and switch the icons). This flicker is due to a global realignment
- H>button titles that occurs after every setting you change. The
- CIconButton CDEF
- makes no
- assumptions
- HIabout how you want the title aligned (hence the variety of settings that
- you can control); in this
- H.demonstration application, however, we adjust
- 5each button after every setting change to reflect the
- HQcurrent font settings, title orientation, and the actual icons it is displaying.
- For example, if you
- H+choose the
- Times 14 bold, italic
- option,
- 7we set the font information for all 4 buttons, but also
- Heincrease the gap between the icon and the text to account for the larger font size (another 4 calls).
- \This flicker won
- t be an issue for you unless you plan to be switching several icons, fonts
- and title
- H<orientations on the fly. If you do plan to do a lot of this
- X)kind of dynamic switching, we suggest you
- HGuse an offscreen pixMap or GWorld to do the drawing, and then copy the
- final screen image to your
- H-window when you
- re done updating the buttons.
- 1Stone Serif
- Digital Alchemy
- CIconButton CDEF 1.0
- B 2Stone Sans Bold
- Using the CIconButton CDEF
- PThe imagery in a CIconButton control is built from cicn resources. Most buttons
- used with the
- CIconButton CDEF
- )T> are created from two cicns: the Shell cicn and the Main cicn.
- Shell
- + cicn is a frame which house the Main icon
- image. The advantage to
- ~Cstoring the Shell separately is that it saves disk space, and that
- it fosters a
- ~)consistent look and feel to your buttons
- "by letting them all share the same
- background.
- D cicn holds the iconic image you want to display in your button. It
- ~ drawn centered in the Shell (if
- 0no Shell is specified, the Main icon is centered
- in the control
- s rectangle).
- A third icon, the
- )W Alternate
- icon, is
- )+$used by the RadioButton and CheckBox
- ~/style buttons as the third part of the button.
- This third part is hidden or
- ~>shown depending on the state of the button. For example, in a
- CheckBox
- button,
- )*>the Alternate icon plays the role of the
- in the box; for a
- ~<RadioButton, it plays the role of the
- inside the circle.
- INote that in a checkBox button, the checkmark (Alternate) icon is always
- ~-the left of the Main icon, and that they are
- #centered as a pair within the shell
- icon.
- Specifying the icons
- CIconButton CDEF
- reinterprets three fields in
- 2the standard toolbox ControlRecord data structures
- as the ID specifiers for these
- ;icons. This mapping is summarized in the table below. The
- contrlMin
- field holds the
- icon ID, the
- )@ contrlMax
- field holds the
- Shell
- icon ID, and the
- contrlValue
- field
- holds the
- )0 Alternate
- )/ icon ID.
- HUFor example, the following code creates a new pushbutton which will draw cicn ID 100
- (main) on
- H!top of cicn ID 1000 (shell). The
- Courier
- kCIconButtonCDEFID
- )l) constant is the resource ID of the CDEF:
- dDbPushbutton := newControl(theWindow, itemBox,
- My Pushbutton
- , true,
- 70, 100, 1000, (16 * kCIconButtonCDEFID), longint(NIL));
- HUThe following creates a radio button that toggles between two icons with IDs 200 and
- 300. Note that
- H)the icons are not framed by a shell icon:
- EbPushbutton := newControl(theWindow, itemBox,
- My RadioButton
- , true,
- 6300, 200, 0, (16 * kCIconButtonCDEFID), longint(NIL));
- HIThe following creates a checkbox button that shows icon ID 700 on top of
- cicn ID 800, and that
- H@shows or hides icon ID 750 depending on the state of the button:
- BbPushbutton := newControl(theWindow, itemBox,
- My Checkbox
- , true,
- 8750, 700, 800, (16 * kCIconButtonCDEFID), longint(NIL));
- You can, of
- )=Rcourse, create your controls ahead of time and store them as CNTL resources in the
- Hfresource fork of your application. The demonstration application stores it
- s dialog controls this way.
- Normal and Hilite icons
- You can define a
- separate set of cicns for
- normal
- and
- hilited
- )#" buttons. If you want to include a
- hilited
- version of the icon, include it
- >as the next sequential cicn resource in the resource fork (for
- example, if your
- normal
- cicn is ID 1000, your
- hilited
- cicn should be ID 1001). You can specify
- HIcustom hilite-icons for any of the Main, Shell, and Alternate icons; for
- those that don
- t have custom
- hilite-icons, the
- CIconButton
- )60 CDEF will create hilighted versions on the fly.
- H-The data from the
- resources is loaded
- :in when the control is first created. After reading in the
- icon IDs, the
- CIconButton CDEF
- resets those fields to the
- 'standard off-state for the control, and
- H+doesn
- t touch them again. In order for the
- CIconButton CDEF
- to work, you
- should at least specify the
- 1Stone Serif
- Digital Alchemy
- CIconButton CDEF 1.0
- default Main icon; if the
- CIconButton CDEF
- )U9 cannot read that in during initialization, it will beep
- H7alert you of the fact (but continue on as best it can).
- B 2Stone Sans Bold
- Field
- Meaning
- Reset-to
- contrlMin
- )\ Main icon
- contrlMax
- Shell icon
- contrlValue
- Alt icon
- Special Drawing Situations
- HThere is one issue worth pointing out that concerns the way the control
- updates itself: when a CDEF
- HCreceives an update (draw) event, it assumes that the background is
- !already correctly drawn. Normally
- HUthis isn
- t a problem since a CDEF usually overwrites the same screen region. For the
- CIconButton
- 7, however, this can be tricky because of the API calls
- (that allow you to change its geometry on
- HGthe fly (e.g. change the title from being below the button to being to
- the right, or the Latch button
- H&that toggles between a vertical state
- =and horizontal state depending on whether the mouse is inside
- or outside of the button). The
- CIconButton CDEF
- )U, has no way of knowing what image underlies
- HGcontrol, so it cannot always effectively
- erase
- itself before drawing.
- PWe solve this by providing (1) a callback to allow you to redraw the background
- image, and (2) a
- H DynamicGeometry flag to let the
- CIconButton CDEF
- )V& know it is dealing with one of these
- special
- H/situations. These features are described below.
- 1Stone Serif
- Digital Alchemy
- CIconButton CDEF 1.0
- B 2Stone Sans Bold
- The API Routines
- You can modify
- )VKthe icon IDs and other settings of a CIconButton control using the routines
- H9provided in the CIconButton.lib file. These routines are
- \)described below, and their headers can be
- H found in CIconButton.Lib.Intf.p.
- Courier
- @PROCEDURE CIB_SetUseWFont (c: ControlHandle; useWFont: boolean);
- \Determines whether the title is displayed in the window
- s font, style and size, or uses the
- standard
- H2System font and size (usually Chicago 12pt plain).
- DPROCEDURE CIB_SetDynamicGeometry (c: ControlHandle; GeometryChanges:
- boolean);
- Determines how the
- CIconButton CDEF
- )V7 erases its box when updating. The default setting for
- H3DynamicGeometry flag is false: erase the icon mask
- J+before drawing using the current background
- H"color and pattern. This should be
- :all you need in most cases (including buttons on non-white
- backgrounds)
- 1If your button
- s geometry changes while tracking
- .the mouse (like the Latch button), the control
- HDneeds not only to erase the area it will draw to, but erase its old
- #position as well. In this case, the
- H;DynamicGeometry flag should be true. Note that if you have
- a checkbox button
- without
- a shell icon
- HH(i.e. on a blank background), your button
- s geometry will change (since
- the Alternate icon will
- toggle on and off).
- CPROCEDURE CIB_SetCallbackProc (c: ControlHandle; theProc: procPtr);
- NSets the draw procedure that should use to erase its background. Use this if
- ve got a complex
- background and
- )QOyour button changes geometry (in the example application, the Latch button uses
- this to redraw
- )ESthe patterned gray background). The procedure receives a handle to the control, and
- HLthe rect it should draw into. Here
- s the one used by the sample application:
- 4PROCEDURE UpdateRoutine (c: controlHandle; r: rect);
- BEGIN
- foreColor(yellowColor);
- FillRect(r, gray);
- foreColor(blackColor);
- END;
- HAPROCEDURE CIB_SetTitleOrientation (c: ControlHandle; orientation:
- integer);
- bDetermines where the title is positioned relative to the icon. Use the following constants (taken
- H&the System 7 icon family definitions):
- atTop = $2;
- atBottom = $3;
- atLeft = $8;
- atRight = $C;
- H^You can hide the title by setting it to the empty string via the toolbox SetCTitle call. Note
- that you
- H!need to pass in an empty string,
- a NULL pointer.
- H<PROCEDURE CIB_SetTrackRegion (c: ControlHandle; TrackRegion:
- boolean);
- Determines whether
- CIconButton CDEF
- )U8 tracks the mouse in the icon region or across the whole
- Hgcontrol rectangle. This is useful for small icons that may be hard to click on (e.g. the latch button).
- >PROCEDURE CIB_SetMainIcon (c: ControlHandle; iconID: integer);
- ?PROCEDURE CIB_SetShellIcon (c: ControlHandle; iconID: integer);
- =PROCEDURE CIB_SetAltIcon (c: ControlHandle; iconID: integer);
- UThese calls allow you to set or reset the icon IDs for a given button. If you pass 0
- into the iconID
- H$parameter, that icon won
- t be drawn.
- 1Stone Serif
- Digital Alchemy
- CIconButton CDEF 1.0
- Courier
- HEPROCEDURE CIB_SetIcons (c: ControlHandle; main, shell, alt: integer);
- fThis lets you do the same thing as the three procedures listed above, but lets you set all three icon
- at once.
- ;PROCEDURE CIB_SetLabelGap (c: ControlHandle; gap: integer);
- ^Sets the distance between the Shell (or Main) icon and the button label for checkmark buttons.
- ?PROCEDURE CIB_SetCheckmarkGap (c: ControlHandle; gap: integer);
- USets the distance between the Main icon and the Alternate icon for checkmark buttons.
- ?PROCEDURE CIB_SetTextFont (c: ControlHandle; theFont: integer);
- PSets the text font for the control. Use the toolbox GetFNum call to translate a
- font name to a
- H\number in order to use this routine. If you pass in 0, the control will be displayed in the
- System font,
- HAor in the Window font if the
- UseWFont
- flag has been set (using
- CIB_SetUseWFont
- H=PROCEDURE CIB_SetTextFace (c: ControlHandle; theFace: Style);
- "Sets the text face (or style) for
- Cthe control. If you pass in 0, the control will be displayed in the
- System font
- )FQtextface, or in the Window
- s text face if the
- UseWFont
- flag has been set (using
- CIB_SetUseWFont
- H?PROCEDURE CIB_SetTextSize (c: ControlHandle; theSize: integer);
- 6Sets the text size for the control. If you pass in 0,
- 3the control will be displayed in the default System
- H]font size, or in the Window font if the
- UseWFont
- flag has been set (using CIB_SetUseWFont).
- ?PROCEDURE CIB_SetTextMode (c: ControlHandle; theMode: integer);
- :Sets the text mode for the control. If you pass in 0, the
- `(control will be reset to the system mode
- srcCopy
- )*;). Note that the default mode will write black text into a
- white box, regardless of the
- HKcurrent background color or pattern. If you want the button text to lie on
- top of a background color
- or image, use
- srcOr
- H;PROCEDURE CIB_SetTextState (c: ControlHandle; theTextState:
- textStatePtr);
- QSets the text font, face, size and mode for the control. This is a shortcut call
- to use if you want to set
- all of these
- )7[parameters at once (note that after each of these calls, the button redraws itself; thus if
- Heyou used 4 separate calls rather than this single call, you would get a slight flicker as the button
- draws
- H4itself 4 times). The routine accepts a pointer to a
- textState
- record, defined as follows:
- TextState = PACKED RECORD
- tsFont: integer;
- filler: byte;
- tsFace: Style;
- tsMode: integer;
- tsSize: integer;
- END;
- TextStatePtr = ^TextState;
- H,You should ensure that your compiler treats
- 9integers as 2 bytes, and a style type as 1 byte long (the
- H whole record should be 8 bytes).
- B 2Stone Sans Bold
- Standard API Routines
- CIconButton CDEF
- also supports several other
- /messages that all defProcs from Digital Alchemy
- support. They are as follows:
- 9FUNCTION CIB_IsCustomControl (c: ControlHandle): boolean;
- Returns true if the defProc
- Eis a custom one designed by Digital Alchemy. This routine essentially
- H4checks an
- author code
- embedded inside the defProc.
- 1Stone Serif
- Digital Alchemy
- CIconButton CDEF 1.0
- Courier
- H5FUNCTION CIB_GetCopyright (c: ControlHandle): str255;
- PReturns a copyright string for inclusion in manuals and About boxes. If you are
- using this defProc in
- a freeware
- )3Wor shareware program, this text should appear along with your other credits, presumably
- in the About box.
- 4FUNCTION CIB_GetVersion (c: ControlHandle): longint;
- 2Returns the version info for the defProc. This is
- 2the same format as the
- short version
- information
- H(as normally stored in a
- resource.
- 1Stone Serif
- Digital Alchemy
- CIconButton CDEF 1.0
- B 2Stone Sans Bold
- Some Icon Combinations
- ]In order to help clarify how the different icon categories work together, we
- ve put together
- this table
- H9that demonstrates some common combinations. The last two
- r"columns show what the button would
- Hflook like depending on the value of the control
- s cntrlValue field: 0 for Off, any other value for On.
- Shell
- )B Off-state
- On-state
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- Courier
- pushButProc
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- radioButProc
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- UUUUUU
- checkBoxProc
-
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- pushButProc
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- pushButProc
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- pushButProc
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- radioButProc
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- radioButProc
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- UUUUUU
- wwwwww
- UUUUUU
- checkBoxProc
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- 1Stone Serif
- Digital Alchemy
- CIconButton CDEF 1.0
- B 2Stone Sans Bold
- Acknowledgments
- Thanks go to the following for
- testing the
- CIconButton CDEF
- )U% and giving valuable feedback through
- out its development.
- Kevin Boyce
- Trey Campbell
- John Cavallino
- John Champion
- Steve Dagley
- Randy DeRuiter
- Gerard Hammond
- Hackster
- Hekster
- Jim McQuillan
- Matthew Xavier Mora
- Harry A. Reinke
- George T. Talbot
- Adam Treister
- HYThanks to Peter N. Lewis and Forrest Tanaka for help on the Quickdraw color manipulation
- code, and
- H2to Jon Wind for inspiration in the About box code.
- 2Special thanks to John Cavallino for inspiration,
- 0Ben
- Hackster
- Hekster for faithful beta-testing
- HRacross my many projects, and Adam Treister and Rich Siegel for giving my defProcs
- their first real
- homes.
- Licensing and Distribution
- CIconButton CDEF
- )U. is
- copyrighted Ramon M. Felciano 1993, All
- !Rights Reserved. The distribution
- HMpackage may be copied and distributed freely as long as no modifications are
- made to it and nothing
- is charged for
- )DTit. The CDEF must be licensed for use in any software project according to the terms
- set forth below.
- ZUsage of the object code (CDEF) in software is subject to a licensing fee of $50.00 for a
- single-product
- license ($25.00 for
- )bLshareware/in-house software), or $300.00 for a multiple-product license. The
- single-product licensing
- )uLfee is waived for non-commercial, in-house software, or software with a list
- HYprice of under $100.00, provided you credit CIconButton and Digital Alchemy in the About
- box, and
- H?send us a copy of the software.
- About
- box credit should read:
- CIconButton CDEF
- from Digital Alchemy
- Ramon M. Felciano 1993, All Rights Reserved
- Source code is available
- )yFfor support purposes for $300.00. Source code is provided as a support
- HKmaterial only in order to allow developers to debug problems as quickly as
- possible. It is not provided
- H^as sample code. All code and derivative works thereof remain copyrighted by Ramon M. Felciano.
- TThe fees are additive: if you pay for 6 single-product licenses at $50.00, you will
- automatically get the
- HJmultiple-product license. The table below summarizes the licensing scheme:
- 0Single-product, with software exhange &
- credit
- $0.00
- ~%Single-product, in-house or shareware
- $25.00
- Single-product
- $50.00
- Multiple-product
- $300.00
- Pascal source code
- $300.00
- H4License pricing is subject to change without notice.
- 1Stone Serif
- Digital Alchemy
- CIconButton CDEF 1.0
- B 2Stone Sans Bold
- Contacting Digital Alchemy
- bPlease send any comments, suggestions or bug reports to me at one of the electronic-mail addresses
- listed below:
- Internet
- felciano@summit.stanford.edu
- America Online
- felciano@summit.stanford.edu
- Applelink
- )Z&felciano@summit.stanford.edu@internet#
- Compuserve
- )Z$>INTERN:felciano@summit.stanford.edu
- HfYou can also contact via U.S.Mail, but electronic-mail is guaranteed to get you a faster response! Our
- mailing address is:
- Digital Alchemy
- P.O.Box 9632
- Stanford, CA 94309-9632
- 58?9&(6K-<
- L7:+>J0*D%
- GFCEA
- !#3,*
- X08P
- >* )3
- 58?9&(6K-<
- L7:+>J0*D%
- GFCEA
- !#3,*
- >* )3
- Startup Man temp.0001
- Applications & Utilities aliast
- fashMACS
- Ramon M. Felciano
- SUMMITM. Felciano
- Microsoft Word
- ffffff
- ffff33
- ff33ff
- ff3333
- 33ffff
- 33ff33
- 3333ff
- 333333
- wwwwww
- UUUUUU
- DDDDDD
- """"""
- Courier:
- B 2Stone Sans Bold:
- SbI 2Stone Sans SemibdItal:
- 1Stone Serif
- rPREC
- ~PRVS
- &FNMS
-